export function getLocalIP() {
  return new Promise((resolve) => {
    // 兼容不同浏览器的RTCPeerConnection
    const RTCPeerConnection = window.RTCPeerConnection ||
      window.mozRTCPeerConnection ||
      window.webkitRTCPeerConnection;

    // 如果不支持WebRTC，返回null
    if (!RTCPeerConnection) {
      resolve(null);
      return;
    }

    // 创建新的PeerConnection实例
    const pc = new RTCPeerConnection({ iceServers: [] });

    // 创建数据通道（空字符串即可）
    pc.createDataChannel('');

    // 创建offer并设置本地描述
    pc.createOffer()
      .then(offer => pc.setLocalDescription(offer))
      .catch(err => {
        console.error('创建offer失败:', err);
        resolve(null);
      });

    // 监听ICE候选事件
    pc.onicecandidate = (ice) => {
      if (!ice || !ice.candidate || !ice.candidate.candidate) {
        // 所有候选收集完毕
        resolve(null);
        return;
      }

      // 使用正则表达式匹配IP地址
      const ipRegex = /([0-9]{1,3}(\.[0-9]{1,3}){3})/;
      const ipMatch = ipRegex.exec(ice.candidate.candidate);

      if (ipMatch) {
        const localIP = ipMatch[1];
        pc.onicecandidate = null;  // 取消监听
        pc.close();  // 关闭连接
        resolve(localIP);
      }
    };
  });
}
